/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package RapiWeb;

import Componentes.C_MenuMovible;
import Utilidades.Archivo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.GridLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 *
 * @author SI-TI
 */
public class JP_Paquete extends JPanel {

    private JTextField txt_NomPaquete;
    private JTextArea txt_AreaDesc;
    private JTextArea txt_AreaBody;
    private JButton btn_Crear;
    private JButton btn_Agregar;
    private JButton btn_Guardar;
    private JButton btn_Abrir;
    private JComboBox cbx_NomTabla;
    private JComboBox cbx_Tabla;
    private JComboBox cbx_Procedimiento;
    private JF_Principal principal;
    private C_MenuMovible menu;
    private Archivo archivo;

    public JP_Paquete(JF_Principal principal) {
        this.principal = principal;
        setLayout(new BorderLayout());
        setBackground(Color.cyan);
        addComponentes();
        addEventos();
    }

    private void addComponentes() {
        JPanel p_Norte = new JPanel();
        JPanel p_Datos[] = new JPanel[5];
        for (int i=0;i<p_Datos.length;i++){
            p_Datos[i]= new JPanel();
            p_Datos[i].setLayout(new GridLayout(3, 1));
        }
        JLabel lbl_NomPaquete = new JLabel("Paquete SQL");
        JLabel lbl_NomTabla = new JLabel("Nombre Tabla");
        JLabel lbl_Tabla = new JLabel("Tabla");
        JLabel lbl_Procedimiento = new JLabel("Procedimiento");
        txt_NomPaquete = new JTextField(20);
        cbx_NomTabla = new JComboBox(principal.getStr_Tabla());
        cbx_Tabla = new JComboBox(principal.getStr_Tabla());
        cbx_Procedimiento = new JComboBox();
        btn_Crear = new JButton("Crear");
        btn_Agregar = new JButton("Agregar");
        btn_Guardar = new JButton("Guardar");
        btn_Abrir = new JButton("Abrir");
        p_Datos[0].add(lbl_NomPaquete);
        p_Datos[1].add(txt_NomPaquete);
//        p_Datos[2].add(lbl_NomTabla);
        p_Datos[3].add(cbx_NomTabla);
        p_Datos[4].add(btn_Crear);
        p_Datos[0].add(lbl_Tabla);
        p_Datos[1].add(cbx_Tabla);
//        p_Datos[2].add(lbl_Procedimiento);
        p_Datos[3].add(cbx_Procedimiento);
        p_Datos[4].add(btn_Agregar);
        p_Datos[0].add(btn_Abrir);
        p_Datos[4].add(btn_Guardar);

        for (int i=0;i<p_Datos.length;i++){
            p_Norte.add(p_Datos[i]);
        }
        
        JPanel p_Centro= new JPanel();
        p_Centro.setLayout(new GridLayout(1, 2));
        txt_AreaDesc = new JTextArea();
        txt_AreaBody = new JTextArea();
        JScrollPane sp_AreaDesc = new JScrollPane(txt_AreaDesc);
        JScrollPane sp_AreaBody = new JScrollPane(txt_AreaBody);
        p_Centro.add(sp_AreaDesc);
        p_Centro.add(sp_AreaBody);

        menu = new C_MenuMovible();
        menu.m_Vertical();
        add(p_Centro, "Center");
        add(p_Norte, "North");
        
    }

    private void addEventos() {
        btn_Crear.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                archivo = new Archivo();
                String str_NomBD = (String) cbx_NomTabla.getSelectedItem();
                str_NomBD=str_NomBD.replace(".txt", "");
                archivo.m_LeerArchivo(principal.getStr_DirecProcedimientos() + str_NomBD + "/" + principal.getProyecto().getStr_ProcedimientoSQL() + str_NomBD + "_Paquete_Spec.sql");
                String str_Desc = archivo.dameContenido();
                str_Desc=str_Desc.replace("?Categoria", txt_NomPaquete.getText());

                archivo.m_LeerArchivo(principal.getStr_DirecProcedimientos() + str_NomBD + "/" + principal.getProyecto().getStr_ProcedimientoSQL() + str_NomBD + "_Paquete_Body.sql");
                String str_Body = archivo.dameContenido();
                str_Body=str_Body.replace("?Categoria", txt_NomPaquete.getText());
                setVisible(false);
                txt_AreaDesc.setText(str_Desc);
                txt_AreaBody.setText(str_Body);
                setVisible(true);
           }
        });
        btn_Agregar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                archivo = new Archivo();
                String str_NomBD = (String) cbx_Tabla.getSelectedItem();
                str_NomBD=str_NomBD.replace(".txt", "");
                String str_Procedimiento = (String) cbx_Procedimiento.getSelectedItem();
                String str_Desc = txt_AreaDesc.getText();
                String str_Body = txt_AreaBody.getText();

                archivo.m_LeerArchivo(principal.getStr_DirecProcedimientos() + str_NomBD + "/" + str_Procedimiento);
                String str_Contenido = archivo.dameContenido()+ "\n--otros";
                str_Contenido=str_Contenido.substring(str_Contenido.indexOf("PROCEDURE"));
                str_Body=str_Body.replace("--otros", str_Contenido);
                
                String str_ContenidoDesc = str_Contenido.substring(0, str_Contenido.indexOf("\nAS"))+";\n\n--otros";
                str_Desc = str_Desc.replace("--otros", str_ContenidoDesc);

                txt_AreaBody.setText(str_Body);
                txt_AreaDesc.setText(str_Desc);
            }
        });
        btn_Guardar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String str_NomBD = (String) cbx_NomTabla.getSelectedItem();
                str_NomBD=str_NomBD.replace(".txt", "");
                archivo=new Archivo();
                try{
                    archivo.m_CrearCarpeta(principal.getStr_DirecPaquetes());
                archivo.m_CrearArchivo(principal.getStr_DirecPaquetes() + principal.getProyecto().getStr_Paquete() + str_NomBD + "_Spec.sql");
                archivo.m_CrearArchivo(principal.getStr_DirecPaquetes() + principal.getProyecto().getStr_Paquete() + str_NomBD + "_Body.sql");

                archivo.m_SobreEscribir(principal.getStr_DirecPaquetes() + principal.getProyecto().getStr_Paquete() + str_NomBD + "_Spec.sql", txt_AreaDesc.getText());
                archivo.m_SobreEscribir(principal.getStr_DirecPaquetes() + principal.getProyecto().getStr_Paquete() + str_NomBD + "_Body.sql", txt_AreaBody.getText());
                System.out.println(archivo.dameError());
                JOptionPane.showMessageDialog(null,"Paquete Guardado ");
                }catch(Exception ex){
                    JOptionPane.showMessageDialog(null,"Excepcion al guardar el Paquete: "+ex.getMessage()+" Archivo: "+archivo.dameError());
                }
                
            }
        });
        btn_Abrir.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                FileDialog fd_Abrir = new FileDialog(principal, "Abrir Paquete", FileDialog.LOAD);
                fd_Abrir.setVisible(true);
                String str_Archivo;
                str_Archivo = fd_Abrir.getDirectory() + fd_Abrir.getFile();
                String str_NomTabla = fd_Abrir.getFile();
                if (fd_Abrir.getFile() != null) {
                    System.out.println("Paquete: " + str_Archivo);
                    archivo=new Archivo();
                    archivo.m_LeerArchivo(str_Archivo);
                    if(str_Archivo.indexOf("Body")>0){
                        txt_AreaBody.setText(archivo.dameContenido());
                    }else{
                        txt_AreaDesc.setText(archivo.dameContenido());
                    }
                }
            }
        });
        
        cbx_Tabla.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String str_NomBD = (String) cbx_Tabla.getSelectedItem();
                str_NomBD = str_NomBD.replace(".txt", "");
                File carpeta;
                carpeta = new File(principal.getStr_DirecProcedimientos() + str_NomBD);
                String[] str_Procedimiento = carpeta.list();
                cbx_Procedimiento.removeAllItems();
                setVisible(false);
                for (int i=0;i<str_Procedimiento.length;i++){
                    cbx_Procedimiento.addItem(str_Procedimiento[i]);
                }
                setVisible(true);
            }
        });
    }
}
